package com.xiyun.f1t100;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class ValidSudoku_36 {
    class Solution {
        public boolean isValidSudoku(char[][] board) {
            Map<Integer, Set<Integer>> row  = new HashMap<>(), col = new HashMap<>(), area = new HashMap<>();
            for (int i = 0; i < 9; i++) {
                row.put(i, new HashSet<>());
                col.put(i, new HashSet<>());
                area.put(i, new HashSet<>());
            }
            for (int i = 0; i < 9; i++) {
                for (int j = 0; j < 9; j++) {
                    char c = board[i][j];
                    if (c == '.') continue;
                    int u = c - '0';
                    int idx = i / 3 * 3 + j / 3;
                    if (row.get(i).contains(u) || col.get(j).contains(u) || area.get(idx).contains(u)) return false;
                    row.get(i).add(u);
                    col.get(j).add(u);
                    area.get(idx).add(u);
                }
            }
            return true;
        }
    }

    public static void resolve(String[] args) {
        char[][] board =
                         {{'5', '3', '.', '.', '7', '.', '.', '.', '.'}
                        , {'6', '.', '.', '1', '9', '5', '.', '.', '.'}
                        , {'.', '9', '8', '.', '.', '.', '.', '6', '.'}
                        , {'8', '.', '.', '.', '6', '.', '.', '.', '3'}
                        , {'4', '.', '.', '8', '.', '3', '.', '.', '1'}
                        , {'7', '.', '.', '.', '2', '.', '.', '.', '6'}
                        , {'.', '6', '.', '.', '.', '.', '2', '8', '.'}
                        , {'.', '.', '.', '4', '1', '9', '.', '.', '5'}
                        , {'.', '.', '.', '.', '8', '.', '.', '7', '9'}};
        ValidSudoku_36.Solution solution = new ValidSudoku_36().new Solution();
        System.out.println(solution.isValidSudoku(board));
    }
}
/*执行用时：
3 ms
, 在所有 Java 提交中击败了
14.06%
的用户
内存消耗：
41.4 MB
, 在所有 Java 提交中击败了
49.42%
的用户*/
